To pytanie ma już odpowiedzi tutaj: Odwróć ciąg w Pythonie (29 odpowiedzi) Zamknięte 4 lata temu. Próbuję odwrócić ciąg i używając poniższego kodu, ale wynikowa wartość listy odwrotnej jest Brak. Kod: str_a = 'To się porusza' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = '' .join (rev_word) Zwraca TypeError. Czemu?
2021-01-15 08:11:18
.reverse () zwraca None. Dlatego nie powinieneś przypisywać go do zmiennej. Użyj tego zamiast tego: stra = 'To jest ciąg' revword = stra.split () revword.reverse () revword = ''. join (revword) Uruchomiłem dla ciebie kod na IDEOne, żebyś mógł zobaczyć wynik. (Zwróć również uwagę, że wynik to stringaisThis; zamiast tego możesz użyć '' .join (revword), ze spacją.) Zauważ również, że podana metoda odwraca tylko słowa, a nie tekst. @ ron.rothman dostarczył łącze, które szczegółowo opisuje, jak odwrócić cały ciąg. | To mój ulubiony sposób odwracania ciągu: stra = "To jest ciąg znaków" revword = stra [:: - 1] print (revword) # "gnirts a si sihT lub, jeśli chcesz odwrócić kolejność słów: revword = "" .join (stra.split () [:: - 1]) print (revword) # "string a is This" :) | Różne odwrócenia na strunie: instring = 'To jest ciąg' reversestring = instring [:: - 1] drukuj odwrócony ciąg # gnirts a si sihT wordsreversed = '' .join (word [:: - 1] for word in instring.split ()) drukuj wordsreversed # sihT si a gnirts revwordorder = '' .join (słowo w słowo w instring.split () [:: - 1]) print revwordorder # string a is This revwordandorder = '' .join (słowo [:: - 1] dla słowa w instring.split () [:: - 1]) drukuj revwordandorder # gnirts a si sihT | W przyszłości, gdy obiekt ma metodę taką jak [] .reverse (), generalnie wykonuje tę akcję na obiekcie (tj. Lista jest posortowana i nic nie zwraca, None) w przeciwieństwie do wbudowanych funkcji, takich jak sortowane, które wykonują akcję na obiekt i zwraca wartość (tj. posortowaną listę) | >>> s = 'to jest ciąg' >>> s [:: - 1] „gnirts a si siht” >>> '' .join (odwrócony (-e)) „gnirts a si siht” | Pętla for iteruje ciąg od końca (ostatnia litera) do początku (pierwsza litera) >>> s = 'Ty też możesz spróbować:]' >>> rev = '' >>> for i in range (len (s) - 1, -1, -1): ... rev + = s [i] >>> rev ']: oot siht yrt nac uoY' | Na podstawie komentarzy i innych odpowiedzi: str_a = 'to jest ciąg' rev_word = '' .join (odwrócony (str_a.split ())) W końcu łączenie metod działa w Pythonie ... | Listę cofania można wykonać na więcej niż jeden sposób. Jak wspomniano w poprzednich odpowiedziach, dwie są bardzo widoczne, jedna z funkcją reverse () i dwie z funkcją krojenia. Podaję kilka wskazówek, które powinniśmy preferować. Powinniśmy zawsze używać funkcji reverse () do odwracania listy w Pythonie. Dwa powody, jedno odwrócenie w miejscu i dwa szybsze niż inne. Mam kilka liczb na poparcie mojej odpowiedzi, W [15]: len (l) Wyjście [15]: 1000 W [16]:% timeit -n1 l.reverse () 1 pętla, najlepsza z 3: 7,87 µs na pętlę W [17]:% timeit -n1 l [:: - 1] 1 pętla, najlepiej 3:10 µs na pętlę W przypadku listy 1000 liczb całkowitych funkcja reverse () działała lepiej w porównaniu do wycinania. | Nie szukasz odpowiedzi? Przeglądaj inne pytania oznaczone tagiem Python lub zadaj własne pytanie.